home *** CD-ROM | disk | FTP | other *** search
/ Macwelt 1 / Macwelt DVD 1.toast / Web-Publishing / HTML-Editoren / Alpha ƒ / Mode Examples / Metafont-Example.mf < prev    next >
Encoding:
Text File  |  2000-10-30  |  10.6 KB  |  598 lines

  1. % Metafont-Example.mf
  2. % This is a sample file for the Metafont mode with Alpha. 
  3. % The features which are herein described will work only if Metafont Mode
  4. % has been properly installed.
  5. % — syntax colorizing
  6. % — capacity to process a source file from within Alpha with various flags,
  7. % printer modes, input base files
  8. % - editing of the log file
  9. % - capacity to make the pk file, to make the dvi from the generic font, to
  10. % view the dvi;
  11. % - creating and editing the property list for a font
  12. % - processing all the source files in a folder instead of a single file
  13. % - file marking
  14. % - ready to use template for a new font
  15. % - key bindings to choose the processing mode, process files etc.
  16. % - command clicking on a word leads to its definition
  17. % - option clicking on the title bar of a window brings a list of .mf and
  18. % .log file at the same level or in a selected folder and allows to edit
  19. % them
  20. % Please see the Metafont Help file for more information.  
  21. % Please check for the latest version of Metafont Mode at :
  22. % <http://perso.easynet.fr/~berdesg/metafont.html>
  23. % The example below is borrowed from the OzTeX distribution.
  24. % Author:  ??
  25.  
  26. % circle.mf
  27.  
  28.  
  29. fontdimen 1: 0,0,0,0,0,0,0,thickness#;
  30. font_coding_scheme:="LaTeX circle";
  31.  
  32. let cmchar=\; % cmchar should precede each character, for testing purposes
  33.  
  34. thickness:=ceiling(thickness#*hppp); % the way rules thicknesses are done
  35. % thickness#:=thickness/hppp; % and let thickness# round to right value
  36. % NO, I deleted this BAD line! --- DEK, 9 Jul 87
  37. pickup pencircle scaled thickness; nib:=savepen;
  38.  
  39. % arcs sets up the points 1, 2, ..., 8 as follows:
  40. %
  41. %            |1
  42. %            |*
  43. %            * *
  44. %           8|  2
  45. %          * |   *
  46. %        7*  |    *3
  47. %        --*-----*--
  48. %           6|  4
  49. %            * *
  50. %            |5
  51. %
  52. %        <----w---->
  53.  
  54. pair upleft,upright,downleft,downright;
  55. upright=-downleft=(1,1); downright=-upleft=(1,-1);
  56.  
  57. % a quarter-circle has width, height and depth set as explained on
  58. % page 389 of the TeXbook, not the real width, height, and depth
  59.  
  60. def qbeginchar (expr c, diam_sharp) =
  61. numeric hh, dd; hh:=.5*(diam_sharp+thickness#);
  62. dd:=.5*(diam_sharp-thickness#);
  63. beginchar(c,diam_sharp,hh,dd);
  64. enddef;
  65.  
  66. def arcs =
  67. numeric delta;
  68. delta:=.5 round((1-sqrt.5)*w); % distance from axis to arc's 45 degree points
  69. bot y3=0; y7=y3=.5[y5,y1]; y1-y5=w;
  70. lft x1=0; x5=x1=.5[x7,x3]; x3-x7=w;
  71. x2-x1=delta; x1-x8=delta; x8=x6; x2=x4;
  72. y8-y7=delta; y7-y6=delta; y8=y2; y6=y4;
  73. enddef;
  74.  
  75. cmchar "2pt, top right";
  76. qbeginchar(0,4pt#);
  77. numeric delta;
  78. pickup nib;
  79. arcs;
  80. draw z7{right}..z6{downright}..z5{down};
  81. endchar;
  82.  
  83. cmchar "2pt, bottom right";
  84. qbeginchar(1,4pt#);
  85. numeric delta;
  86. pickup nib;
  87. arcs;
  88. draw z1{down}..z8{downleft}..z7{left};
  89. endchar;
  90.  
  91. cmchar "2pt, bottom left";
  92. qbeginchar(2,4pt#);
  93. numeric delta;
  94. pickup nib;
  95. arcs;
  96. draw z3{left}..z2{upleft}..z1{up};
  97. endchar;
  98.  
  99. cmchar "2pt, top left";
  100. qbeginchar(3,4pt#);
  101. numeric delta;
  102. pickup nib;
  103. arcs;
  104. draw z5{up}..z4{upright}..z3{right};
  105. endchar;
  106.  
  107. cmchar "4pt, top right";
  108. qbeginchar(4,8pt#);
  109. numeric delta;
  110. pickup nib;
  111. arcs;
  112. draw z7{right}..z6{downright}..z5{down};
  113. endchar;
  114.  
  115. cmchar "4pt, bottom right";
  116. qbeginchar(5,8pt#);
  117. numeric delta;
  118. pickup nib;
  119. arcs;
  120. draw z1{down}..z8{downleft}..z7{left};
  121. endchar;
  122.  
  123. cmchar "4pt, bottom left";
  124. qbeginchar(6,8pt#);
  125. numeric delta;
  126. pickup nib;
  127. arcs;
  128. draw z3{left}..z2{upleft}..z1{up};
  129. endchar;
  130.  
  131. cmchar "4pt, top left";
  132. qbeginchar(7,8pt#);
  133. numeric delta;
  134. pickup nib;
  135. arcs;
  136. draw z5{up}..z4{upright}..z3{right};
  137. endchar;
  138.  
  139. cmchar "6pt, top right";
  140. qbeginchar(8,12pt#);
  141. numeric delta;
  142. pickup nib;
  143. arcs;
  144. draw z7{right}..z6{downright}..z5{down};
  145. endchar;
  146.  
  147. cmchar "6pt, bottom right";
  148. qbeginchar(9,12pt#);
  149. numeric delta;
  150. pickup nib;
  151. arcs;
  152. draw z1{down}..z8{downleft}..z7{left};
  153. endchar;
  154.  
  155. cmchar "6pt, bottom left";
  156. qbeginchar(10,12pt#);
  157. numeric delta;
  158. pickup nib;
  159. arcs;
  160. draw z3{left}..z2{upleft}..z1{up};
  161. endchar;
  162.  
  163. cmchar "6pt, top left";
  164. qbeginchar(11,12pt#);
  165. numeric delta;
  166. pickup nib;
  167. arcs;
  168. draw z5{up}..z4{upright}..z3{right};
  169. endchar;
  170.  
  171. cmchar "8pt, top right";
  172. qbeginchar(12,16pt#);
  173. numeric delta;
  174. pickup nib;
  175. arcs;
  176. draw z7{right}..z6{downright}..z5{down};
  177. endchar;
  178.  
  179. cmchar "8pt, bottom right";
  180. qbeginchar(13,16pt#);
  181. numeric delta;
  182. pickup nib;
  183. arcs;
  184. draw z1{down}..z8{downleft}..z7{left};
  185. endchar;
  186.  
  187. cmchar "8pt, bottom left";
  188. qbeginchar(14,16pt#);
  189. numeric delta;
  190. pickup nib;
  191. arcs;
  192. draw z3{left}..z2{upleft}..z1{up};
  193. endchar;
  194.  
  195. cmchar "8pt, top left";
  196. qbeginchar(15,16pt#);
  197. numeric delta;
  198. pickup nib;
  199. arcs;
  200. draw z5{up}..z4{upright}..z3{right};
  201. endchar;
  202.  
  203. cmchar "10pt, top right";
  204. qbeginchar(16,20pt#);
  205. numeric delta;
  206. pickup nib;
  207. arcs;
  208. draw z7{right}..z6{downright}..z5{down};
  209. endchar;
  210.  
  211. cmchar "10pt, bottom right";
  212. qbeginchar(17,20pt#);
  213. numeric delta;
  214. pickup nib;
  215. arcs;
  216. draw z1{down}..z8{downleft}..z7{left};
  217. endchar;
  218.  
  219. cmchar "10pt, bottom left";
  220. qbeginchar(18,20pt#);
  221. numeric delta;
  222. pickup nib;
  223. arcs;
  224. draw z3{left}..z2{upleft}..z1{up};
  225. endchar;
  226.  
  227. cmchar "10pt, top left";
  228. qbeginchar(19,20pt#);
  229. numeric delta;
  230. pickup nib;
  231. arcs;
  232. draw z5{up}..z4{upright}..z3{right};
  233. endchar;
  234.  
  235. cmchar "12pt, top right";
  236. qbeginchar(20,24pt#);
  237. numeric delta;
  238. pickup nib;
  239. arcs;
  240. draw z7{right}..z6{downright}..z5{down};
  241. endchar;
  242.  
  243. cmchar "12pt, bottom right";
  244. qbeginchar(21,24pt#);
  245. numeric delta;
  246. pickup nib;
  247. arcs;
  248. draw z1{down}..z8{downleft}..z7{left};
  249. endchar;
  250.  
  251. cmchar "12pt, bottom left";
  252. qbeginchar(22,24pt#);
  253. numeric delta;
  254. pickup nib;
  255. arcs;
  256. draw z3{left}..z2{upleft}..z1{up};
  257. endchar;
  258.  
  259. cmchar "12pt, top left";
  260. qbeginchar(23,24pt#);
  261. numeric delta;
  262. pickup nib;
  263. arcs;
  264. draw z5{up}..z4{upright}..z3{right};
  265. endchar;
  266.  
  267. cmchar "14pt, top right";
  268. qbeginchar(24,28pt#);
  269. numeric delta;
  270. pickup nib;
  271. arcs;
  272. draw z7{right}..z6{downright}..z5{down};
  273. endchar;
  274.  
  275. cmchar "14pt, bottom right";
  276. qbeginchar(25,28pt#);
  277. numeric delta;
  278. pickup nib;
  279. arcs;
  280. draw z1{down}..z8{downleft}..z7{left};
  281. endchar;
  282.  
  283. cmchar "14pt, bottom left";
  284. qbeginchar(26,28pt#);
  285. numeric delta;
  286. pickup nib;
  287. arcs;
  288. draw z3{left}..z2{upleft}..z1{up};
  289. endchar;
  290.  
  291. cmchar "14pt, top left";
  292. qbeginchar(27,28pt#);
  293. numeric delta;
  294. pickup nib;
  295. arcs;
  296. draw z5{up}..z4{upright}..z3{right};
  297. endchar;
  298.  
  299. cmchar "16pt, top right";
  300. qbeginchar(28,32pt#);
  301. numeric delta;
  302. pickup nib;
  303. arcs;
  304. draw z7{right}..z6{downright}..z5{down};
  305. endchar;
  306.  
  307. cmchar "16pt, bottom right";
  308. qbeginchar(29,32pt#);
  309. numeric delta;
  310. pickup nib;
  311. arcs;
  312. draw z1{down}..z8{downleft}..z7{left};
  313. endchar;
  314.  
  315. cmchar "16pt, bottom left";
  316. qbeginchar(30,32pt#);
  317. numeric delta;
  318. pickup nib;
  319. arcs;
  320. draw z3{left}..z2{upleft}..z1{up};
  321. endchar;
  322.  
  323. cmchar "16pt, top left";
  324. qbeginchar(31,32pt#);
  325. numeric delta;
  326. pickup nib;
  327. arcs;
  328. draw z5{up}..z4{upright}..z3{right};
  329. endchar;
  330.  
  331. cmchar "18pt, top right";
  332. qbeginchar(32,36pt#);
  333. numeric delta;
  334. pickup nib;
  335. arcs;
  336. draw z7{right}..z6{downright}..z5{down};
  337. endchar;
  338.  
  339. cmchar "18pt, bottom right";
  340. qbeginchar(33,36pt#);
  341. numeric delta;
  342. pickup nib;
  343. arcs;
  344. draw z1{down}..z8{downleft}..z7{left};
  345. endchar;
  346.  
  347. cmchar "18pt, bottom left";
  348. qbeginchar(34,36pt#);
  349. numeric delta;
  350. pickup nib;
  351. arcs;
  352. draw z3{left}..z2{upleft}..z1{up};
  353. endchar;
  354.  
  355. cmchar "18pt, top left";
  356. qbeginchar(35,36pt#);
  357. numeric delta;
  358. pickup nib;
  359. arcs;
  360. draw z5{up}..z4{upright}..z3{right};
  361. endchar;
  362.  
  363. cmchar "20pt, top right";
  364. qbeginchar(36,40pt#);
  365. numeric delta;
  366. pickup nib;
  367. arcs;
  368. draw z7{right}..z6{downright}..z5{down};
  369. endchar;
  370.  
  371. cmchar "20pt, bottom right";
  372. qbeginchar(37,40pt#);
  373. numeric delta;
  374. pickup nib;
  375. arcs;
  376. draw z1{down}..z8{downleft}..z7{left};
  377. endchar;
  378.  
  379. cmchar "20pt, bottom left";
  380. qbeginchar(38,40pt#);
  381. numeric delta;
  382. pickup nib;
  383. arcs;
  384. draw z3{left}..z2{upleft}..z1{up};
  385. endchar;
  386.  
  387. cmchar "20pt, top left";
  388. qbeginchar(39,40pt#);
  389. numeric delta;
  390. pickup nib;
  391. arcs;
  392. draw z5{up}..z4{upright}..z3{right};
  393. endchar;
  394.  
  395. % The full circles have height and depth 0pt because otherwise there
  396. % are too many heights and depths for the TFM files
  397.  
  398. cmchar "1pt, circle";
  399. beginchar(96,1pt#,0pt#,0pt#);
  400. pickup nib;
  401. draw fullcircle scaled w;
  402. endchar;
  403.  
  404. cmchar "2pt, circle";
  405. beginchar(97,2pt#,0pt#,0pt#);
  406. pickup nib;
  407. draw fullcircle scaled w;
  408. endchar;
  409.  
  410. cmchar "3pt, circle";
  411. beginchar(98,3pt#,0pt#,0pt#);
  412. pickup nib;
  413. draw fullcircle scaled w;
  414. endchar;
  415.  
  416. cmchar "4pt, circle";
  417. beginchar(99,4pt#,0pt#,0pt#);
  418. pickup nib;
  419. draw fullcircle scaled w;
  420. endchar;
  421.  
  422. cmchar "5pt, circle";
  423. beginchar(100,5pt#,0pt#,0pt#);
  424. pickup nib;
  425. draw fullcircle scaled w;
  426. endchar;
  427.  
  428. cmchar "6pt, circle";
  429. beginchar(101,6pt#,0pt#,0pt#);
  430. pickup nib;
  431. draw fullcircle scaled w;
  432. endchar;
  433.  
  434. cmchar "7pt, circle";
  435. beginchar(102,7pt#,0pt#,0pt#);
  436. pickup nib;
  437. draw fullcircle scaled w;
  438. endchar;
  439.  
  440. cmchar "8pt, circle";
  441. beginchar(103,8pt#,0pt#,0pt#);
  442. pickup nib;
  443. draw fullcircle scaled w;
  444. endchar;
  445.  
  446. cmchar "9pt, circle";
  447. beginchar(104,9pt#,0pt#,0pt#);
  448. pickup nib;
  449. draw fullcircle scaled w;
  450. endchar;
  451.  
  452. cmchar "10pt, circle";
  453. beginchar(105,10pt#,0pt#,0pt#);
  454. pickup nib;
  455. draw fullcircle scaled w;
  456. endchar;
  457.  
  458. cmchar "11pt, circle";
  459. beginchar(106,11pt#,0pt#,0pt#);
  460. pickup nib;
  461. draw fullcircle scaled w;
  462. endchar;
  463.  
  464. cmchar "12pt, circle";
  465. beginchar(107,12pt#,0pt#,0pt#);
  466. pickup nib;
  467. draw fullcircle scaled w;
  468. endchar;
  469.  
  470. cmchar "13pt, circle";
  471. beginchar(108,13pt#,0pt#,0pt#);
  472. pickup nib;
  473. draw fullcircle scaled w;
  474. endchar;
  475.  
  476. cmchar "14pt, circle";
  477. beginchar(109,14pt#,0pt#,0pt#);
  478. pickup nib;
  479. draw fullcircle scaled w;
  480. endchar;
  481.  
  482. cmchar "15pt, circle";
  483. beginchar(110,15pt#,0pt#,0pt#);
  484. pickup nib;
  485. draw fullcircle scaled w;
  486. endchar;
  487.  
  488. cmchar "1pt, blob";
  489. beginchar(112,1pt#,0pt#,0pt#);
  490. pickup pencircle scaled w;
  491. drawdot origin;
  492. endchar;
  493.  
  494. cmchar "2pt, blob";
  495. beginchar(113,2pt#,0pt#,0pt#);
  496. pickup pencircle scaled w;
  497. drawdot origin;
  498. endchar;
  499.  
  500. cmchar "3pt, blob";
  501. beginchar(114,3pt#,0pt#,0pt#);
  502. pickup pencircle scaled w;
  503. drawdot origin;
  504. endchar;
  505.  
  506. cmchar "4pt, blob";
  507. beginchar(115,4pt#,0pt#,0pt#);
  508. pickup pencircle scaled w;
  509. drawdot origin;
  510. endchar;
  511.  
  512. cmchar "5pt, blob";
  513. beginchar(116,5pt#,0pt#,0pt#);
  514. pickup pencircle scaled w;
  515. drawdot origin;
  516. endchar;
  517.  
  518. cmchar "6pt, blob";
  519. beginchar(117,6pt#,0pt#,0pt#);
  520. pickup pencircle scaled w;
  521. drawdot origin;
  522. endchar;
  523.  
  524. cmchar "7pt, blob";
  525. beginchar(118,7pt#,0pt#,0pt#);
  526. pickup pencircle scaled w;
  527. drawdot origin;
  528. endchar;
  529.  
  530. cmchar "8pt, blob";
  531. beginchar(119,8pt#,0pt#,0pt#);
  532. pickup pencircle scaled w;
  533. drawdot origin;
  534. endchar;
  535.  
  536. cmchar "9pt, blob";
  537. beginchar(120,9pt#,0pt#,0pt#);
  538. pickup pencircle scaled w;
  539. drawdot origin;
  540. endchar;
  541.  
  542. cmchar "10pt, blob";
  543. beginchar(121,10pt#,0pt#,0pt#);
  544. pickup pencircle scaled w;
  545. drawdot origin;
  546. endchar;
  547.  
  548. cmchar "11pt, blob";
  549. beginchar(122,11pt#,0pt#,0pt#);
  550. pickup pencircle scaled w;
  551. drawdot origin;
  552. endchar;
  553.  
  554. cmchar "12pt, blob";
  555. beginchar(123,12pt#,0pt#,0pt#);
  556. pickup pencircle scaled w;
  557. drawdot origin;
  558. endchar;
  559.  
  560. cmchar "13pt, blob";
  561. beginchar(124,13pt#,0pt#,0pt#);
  562. pickup pencircle scaled w;
  563. drawdot origin;
  564. endchar;
  565.  
  566. cmchar "14pt, blob";
  567. beginchar(125,14pt#,0pt#,0pt#);
  568. pickup pencircle scaled w;
  569. drawdot origin;
  570. endchar;
  571.  
  572. cmchar "15pt, blob";
  573. beginchar(126,15pt#,0pt#,0pt#);
  574. pickup pencircle scaled w;
  575. drawdot origin;
  576. endchar;
  577.  
  578. bye
  579.  
  580.